<?php
// +----------------------------------------------------------------------
// | build-admin.
// +----------------------------------------------------------------------
// | FileName: Base.php
// +----------------------------------------------------------------------
// | Author: King east <1207877378@qq.com>
// +----------------------------------------------------------------------


namespace app\common\builder;


use app\common\taglib\Ke;
use think\App;
use think\Container;
use think\Request;
use think\View;

class Base
{
    protected $vars = [
    ];

    protected $name = '';
    /**
     * @var App
     */
    protected $app;

    /**
     * @var Request
     */
    protected $request;

    /**
     * @var \Twig_Environment
     */
    protected $view;


    public function __construct()
    {
        $this->app     = Container::get('app');
        $this->request = $this->app['request'];

        $loader = new \Twig_Loader_Filesystem(__DIR__ . '/template/');
        $this->view = new \Twig_Environment($loader, [
            'cache'=>\think\facade\App::getRuntimePath() . 'twig_cache/',
            'debug'=>\think\facade\App::isDebug()
        ]);

        $this->view->addGlobal('__STATIC__', '/static');

//        $this->view    = new View();
//        $this->view->init([
//            'view_path'=>__DIR__ . '/template/',
//            'auto_rule'          => 3,
//            'view_suffix'        => 'html', // 默认模板文件后缀
//            'view_depr'          => DIRECTORY_SEPARATOR,
//            'cache_suffix'       => 'php', // 默认模板缓存后缀
//            'tpl_deny_func_list' => 'echo,exit', // 模板引擎禁用函数
//            'tpl_deny_php'       => false, // 默认模板引擎是否禁用PHP原生代码
//            'tpl_begin'          => '{', // 模板引擎普通标签开始标记
//            'tpl_end'            => '}', // 模板引擎普通标签结束标记
//            'strip_space'        => false, // 是否去除模板文件里面的html空格与换行
//            'tpl_cache'          => false, // 是否开启模板编译缓存,设为false则每次都会重新编译
//            'compile_type'       => 'file', // 模板编译类型
//            'cache_prefix'       => '__ke__', // 模板缓存前缀标识，可以动态改变
//            'cache_time'         => 0, // 模板缓存有效期 0 为永久，(以数字为值，单位:秒)
//            'layout_on'          => false, // 布局模板开关
//            'layout_name'        => 'layout', // 布局模板入口文件
//            'layout_item'        => '{__CONTENT__}', // 布局模板的内容替换标识
//            'taglib_begin'       => '{', // 标签库标签开始标记
//            'taglib_end'         => '}', // 标签库标签结束标记
//            'taglib_load'        => true, // 是否使用内置标签库之外的其它标签库，默认自动检测
//            'taglib_build_in'    => 'cx,' . Ke::class, // 内置标签库名称(标签使用不必指定标签库名称),以逗号分隔 注意解析顺序
//            'taglib_pre_load'    => '', // 需要额外加载的标签库(须指定标签库名称)，多个以逗号分隔
//            'display_cache'      => false, // 模板渲染缓存
//            'cache_id'           => '', // 模板缓存ID
//            'tpl_replace_string' => [
//                '__STATIC__'   => '/static'
//            ],
//            'tpl_var_identify'   => 'array', // .语法变量识别，array|object|'', 为空时自动识别
//            'default_filter'     => 'htmlentities', // 默认过滤方法 用于普通标签输出
//        ]);
        $this->init();
    }

    protected function init()
    {
    }

    /**
     * 设置变量
     * @param string $name
     * @param array $data
     */
    protected function pushVars($name, $data)
    {
        if (empty($this->vars[$name])) {
            $this->vars[$name] = [];
        }
        $this->vars[$name][] = $data;
    }

    /**
     * 设置标题
     * @param string $str
     * @return $this
     */
    public function setTitle($str)
    {
        $this->vars['title'] = $str;
        return $this;
    }


    /**
     * 设置样式
     * @param array $data
     * @return $this
     */
    public function setStyle(array $data)
    {
        $sty = '';
        foreach ($data as $k=>$v) {
            $sty .= $k . ':' . $v . ';';
        }
        $this->vars['style'] = $sty;
        return $this;
    }

    /**
     * 页面渲染
     * @return string
     */
    public function render()
    {
        return $this->view->render($this->name . '.twig', $this->vars);
    }

}